package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
	"net/url"
	"strings"
	"time"
)

func main() {
	// 初始化一个默认的http客户端
	client := http.DefaultClient
	// 设置请求超时时间为5秒
	client.Timeout = time.Second * 5

	// 使用Values组织post请求参数
	params := url.Values{}
	params.Add("id", "1")
	params.Add("username", "tizi")
	params.Add("password", "123456")

	// 创建http请求, 因为NewRequest的请求参数，接受的是io.Reader，所以先将Values编码成url参数字符串，
	// 然后使用strings.NewReader转换成io.Reader对象
	req, _ := http.NewRequest("POST", "http://api.baidu.com/user/info", strings.NewReader(params.Encode()))

	// 设置请求头(header)
	req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
	req.Header.Add("Site", "www.tizi365.com")

	// 设置cookie
	// 初始化cookie对象
	cookie := http.Cookie{}
	cookie.Name = "tizi-domain"  // cookie名字
	cookie.Value = "tizi365.com" // cookie值
	cookie.Path = "/"            // cookie 路径
	//cookie有效期为3600秒
	cookie.MaxAge = 3600

	// 为请求添加cookie
	req.AddCookie(&cookie)

	// 使用http客户端发送请求
	resp, err := client.Do(req)
	if err != nil {
		//请求错误处理
	}

	// 处理完请求后需要关闭响应对象的body
	defer resp.Body.Close()

	body, _ := ioutil.ReadAll(resp.Body)
	fmt.Println(string(body))
}
